package com.sheng.leetcode.year2023.month03.day30;

import org.junit.Test;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author liusheng
 * @date 2023/03/30
 * <p>
 * 1637. 两点之间不包含任何点的最宽垂直区域<p>
 * <p>
 * 给你 n 个二维平面上的点 points ，其中 points[i] = [xi, yi] ，请你返回两点之间内部不包含任何点的 最宽垂直区域 的宽度。<p>
 * 垂直区域 的定义是固定宽度，而 y 轴上无限延伸的一块区域（也就是高度为无穷大）。 最宽垂直区域 为宽度最大的一个垂直区域。<p>
 * 请注意，垂直区域 边上 的点 不在 区域内。<p>
 * <p>
 * 示例 1：<p>
 * 输入：points = [[8,7],[9,9],[7,4],[9,7]]<p>
 * 输出：1<p>
 * 解释：红色区域和蓝色区域都是最优区域。<p>
 * <p>
 * 示例 2：<p>
 * 输入：points = [[3,1],[9,0],[1,0],[1,4],[5,3],[8,8]]<p>
 * 输出：3<p>
 * <p>
 * 提示：<p>
 * n == points.length<p>
 * 2 <= n <= 10^5<p>
 * points[i].length == 2<p>
 * 0 <= xi, yi <= 10^9<p>
 * <p>
 * 来源：力扣（LeetCode）<p>
 * 链接：<a href="https://leetcode.cn/problems/widest-vertical-area-between-two-points-containing-no-points">1637. 两点之间不包含任何点的最宽垂直区域</a><p>
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。<p>
 */
public class LeetCode1637 {

    @Test
    public void test01() {
//        int[][] points = {{8, 7}, {9, 9}, {7, 4}, {9, 7}};
        int[][] points = {{3, 1}, {9, 0}, {1, 0}, {1, 4}, {5, 3}, {8, 8}};
        System.out.println(new Solution().maxWidthOfVerticalArea(points));
    }
}

class Solution {
    public int maxWidthOfVerticalArea(int[][] points) {
        Arrays.sort(points, Comparator.comparingInt(o -> o[0]));
        int max = 0;
        for (int i = 1; i < points.length; i++) {
            max = Math.max(max, points[i][0] - points[i - 1][0]);
        }
        return max;
    }
}
